package leetcode;

/**
 * 125. 验证回文串
 * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
 * 说明：本题中，我们将空字符串定义为有效的回文串。
 * 示例 1:
 * 输入: "A man, a plan, a canal: Panama"
 * 输出: true
 * 示例 2:
 * 输入: "race a car"
 * 输出: false
 */

public class problems_125 {

    public static void main(String[] arge) {
       System.out.println(new Solution().isPalindrome("a."));
    }
    static class Solution {
        public boolean isPalindrome(String s) {
            if(null == s || s.isEmpty()) return true;
            s = s.toLowerCase().replaceAll(" ","").replaceAll("[^a-z0-9]","");
            return isPalindrome(s, 0, s.length() - 1);
        }
        /**
         * 回文判断
         */
        public boolean isPalindrome(String s, int left, int right) {
            while (left <= right && left >= 0 && right < s.length()) {
                if (s.charAt(left) != s.charAt(right)) {
                    return false;
                }
                left++;
                right--;
            }
            return true;
        }
    }
}
